class Teacher:
    school = "buzaoya"
    xxx = '我是类的属性，也可能是对象的属性'
    yyy = 111
    def __init__(self,name , age, sex):
        self.name = name
        self.age = age
        self.sex = sex
    def course(self):
        """
        self就是对象本身
        :return:
        """
        print(self)
        print('course')
        print(self.name)
        print("---------------")
        print("我是龙仔的属性%s"%self.name)
        print("我是龙仔的属性%s"%self.age)
        return "11111"
if __name__ == '__main__':
    longzai = Teacher('龙仔',18,'男')

    # 添加一个对象属性
    # longzai.xxx = "我是对象的属性"

    # 属性查找优先找对象，对象没有才取类里面找
    # print(longzai.xxx)

    # 类和对象的属性共享关系
    """t1 = Teacher("王帅",19,'女')
    print(t1.xxx) # 我是类的属性，也可能是对象的属性"""

    # 调用course方法，只能是类对象/实例对象 去调用
    # print(t1.course())

    # 类的属性变化对类和对象的影响
    Teacher.yyy = 333

    # 对象改类的属性(改不了)(实际上是自己添加实例一个独有的属性)
    longzai.yyy = 222

    # 类的属性给对象调用
    # 对象已经有了yyy属性的会优先考虑自己的
    # print(id(longzai.yyy),longzai.yyy)

    # 类自己用
    # print(id(Teacher.yyy),Teacher.yyy)

    # 对象调用类中带self参数的方法
    # print(id(longzai.course)) # 1500268131008
    # print(longzai) # <__main__.Teacher object at 0x00000250842FEFD0>
    longzai.course()

    # 类调用方法必须传入self参数对应的对象，因为方法里面需要使用这个self对象
    # Teacher.course(longzai) # 不符合常理，虽然可以实现，但是没人会这样操作
    






